// courses.js
Page({
    data: {
      categories: [],
      courses: [],
      currentCategory: 0,
      hasMore: true,
      page: 1,
      pageSize: 10,
      loading: false,
      error: null
    },
  
  onLoad() {
    this.loadCategories()
    this.loadCourses()
  },
  
  // 加载分类数据
  loadCategories() {
    this.setData({ loading: true, error: null })
    this.getFenLei()
  },
  
  // 加载课程数据
  loadCourses() {
    this.setData({ loading: true, error: null })
    this.getContent()
  },
  
    // 分类点击事件
    onCategoryTap(e) {
      const categoryId = e.currentTarget.dataset.id
      console.log('选择分类ID:', categoryId)
      
      // 添加点击动画效果
      const categories = this.data.categories.map(item => ({
        ...item,
        tapAnimation: item.id == categoryId
      }))
      
      this.setData({
        categories: categories,
        currentCategory: categoryId,
        page: 1,
        hasMore: true,
        courses: [], // 清空现有课程列表
        loading: true
      })
      
      // 清除动画类名
      setTimeout(() => {
        const resetCategories = this.data.categories.map(item => ({
          ...item,
          tapAnimation: false
        }))
        this.setData({
          categories: resetCategories
        })
      }, 150)
      
      this.filterCoursesByCategory(categoryId)
    },
  
    // 根据分类筛选课程
    filterCoursesByCategory(categoryId) {
      if (categoryId === 0) {
        // 显示所有课程
        this.getContent()
      } else {
        // 筛选特定分类的课程
        wx.request({
          url: 'http://localhost:8081/contentChapter/getCont',
          method: "GET",
          success: (res) => {
            console.log('筛选课程数据:', res.data)
            if (res.data && res.data.length > 0) {
              // 筛选指定分类的课程
              const filteredCourses = res.data
                .filter(course => course.categoryId == categoryId)
                .map(course => ({
                  id: course.id,
                  title: course.title,
                  cover: course.cover,
                  type: course.type,
                  typeText: course.type === 'course' ? '课程' : '其他',
                  duration: course.duration,
                  isFree: course.isFree === 1,
                  isVipOnly: course.price > 0, // 价格大于0的课程需要VIP
                  price: 0, // 不再显示价格，改为VIP限制
                  viewCount: course.viewCount,
                  saleCount: course.saleCount,
                  intro: course.intro,
                  categoryId: course.categoryId,
                  lecturer: course.lecturer,
                  organization: course.organization,
                  chapterList: course.chapterList
                }))
              
              // 前端分页逻辑
              const pageSize = 10
              const startIndex = (this.data.page - 1) * pageSize
              const endIndex = startIndex + pageSize
              const courses = filteredCourses.slice(startIndex, endIndex)
              
              // 如果是第一页，直接设置课程列表；否则追加到现有列表
              if (this.data.page === 1) {
                this.setData({
                  courses: courses,
                  loading: false,
                  error: null
                })
              } else {
                // 追加新数据到现有列表
                const newCourses = [...this.data.courses, ...courses]
                this.setData({
                  courses: newCourses,
                  loading: false,
                  error: null
                })
              }
              
              // 检查是否还有更多数据
              if (endIndex >= filteredCourses.length) {
                this.setData({
                  hasMore: false
                })
              }
            } else {
              if (this.data.page === 1) {
                this.setData({
                  courses: [],
                  loading: false
                })
              } else {
                // 没有更多数据了
                this.setData({
                  hasMore: false,
                  loading: false
                })
              }
            }
          },
          fail: (err) => {
            console.error('筛选课程失败:', err)
            // 设置空课程列表
            this.setData({
              courses: [],
              loading: false,
              error: '筛选课程失败'
            })
            wx.showToast({
              title: '筛选课程失败',
              icon: 'none'
            })
          }
        })
      }
    },
    //课程分类
    getFenLei(){
      wx.request({
        url: 'http://localhost:8081/category/getCategory',
        method: "GET",
        success: (res) => {
          console.log('分类数据:', res.data)
          if (res.data && res.data.length > 0) {
            // 定义分类图标映射
            const categoryIcons = {
              1: '🏥', // 中医课程
              2: '👐', // 基础按摩
              3: '🔥', // 艾灸
              4: '🫙', // 拔罐
              5: '🔪', // 刮痧
              6: '💆', // 推拿
              7: '🧘', // 养生
              8: '📚', // 理论
            }
            
            // 转换API数据格式，添加图标和默认数据
            const categories = [
              { 
                id: 0, 
                name: '全部', 
                icon: '📖',
                count: 0 // 将在获取课程后更新
              },
              ...res.data.map(item => ({
                id: item.id,
                name: item.name,
                parentId: item.parentId,
                type: item.type,
                sort: item.sort,
                icon: categoryIcons[item.id] || '📋',
                count: 0 // 将在获取课程后更新
              }))
            ]
            
            this.setData({
              categories: categories,
              loading: false
            })
            
            // 获取课程数据后更新分类计数
            this.updateCategoryCounts()
          } else {
            this.setData({
              categories: [{ id: 0, name: '全部', icon: '📖', count: 0 }],
              loading: false
            })
          }
        },
        fail: (err) => {
          console.error('获取分类失败:', err)
          // 设置默认分类数据
          this.setData({
            categories: [{ id: 0, name: '全部', icon: '📖', count: 0 }],
            loading: false,
            error: '获取分类失败'
          })
          wx.showToast({
            title: '获取分类失败',
            icon: 'none'
          })
        }
      })
    },
  
    //获取所有课程
    getContent(){
      wx.request({
        url: 'http://localhost:8081/contentChapter/getCont',
        method: "GET",
        success: (res) => {
          console.log('课程数据:', res.data)
          if (res.data && res.data.length > 0) {
            // 转换API数据格式为页面需要的格式
            const allCourses = res.data.map(course => ({
              id: course.id,
              title: course.title,
              cover: course.cover,
              type: course.type,
              typeText: course.type === 'course' ? '课程' : '其他',
              duration: course.duration,
              isFree: course.isFree === 1,
              isVipOnly: course.price > 0, // 价格大于0的课程需要VIP
              price: 0, // 不再显示价格，改为VIP限制
              viewCount: course.viewCount,
              saleCount: course.saleCount,
              intro: course.intro,
              categoryId: course.categoryId,
              lecturer: course.lecturer,
              organization: course.organization,
              chapterList: course.chapterList
            }))
            
            // 前端分页逻辑
            const pageSize = 10
            const startIndex = (this.data.page - 1) * pageSize
            const endIndex = startIndex + pageSize
            const courses = allCourses.slice(startIndex, endIndex)
            
            // 如果是第一页，直接设置课程列表；否则追加到现有列表
            if (this.data.page === 1) {
              this.setData({
                courses: courses,
                loading: false,
                error: null
              })
              
              // 更新分类计数
              this.updateCategoryCounts()
            } else {
              // 追加新数据到现有列表
              const newCourses = [...this.data.courses, ...courses]
              this.setData({
                courses: newCourses,
                loading: false,
                error: null
              })
            }
            
            // 检查是否还有更多数据
            if (endIndex >= allCourses.length) {
              this.setData({
                hasMore: false
              })
            }
          } else {
            if (this.data.page === 1) {
              this.setData({
                courses: [],
                loading: false
              })
            } else {
              // 没有更多数据了
              this.setData({
                hasMore: false,
                loading: false
              })
            }
          }
        },
        fail: (err) => {
          console.error('获取课程失败:', err)
          // 设置空课程列表
          this.setData({
            courses: [],
            loading: false,
            error: '获取课程失败'
          })
          wx.showToast({
            title: '获取课程失败',
            icon: 'none'
          })
        }
      })
    },
    // 课程点击事件
    onCourseTap(e) {
      const course = e.detail.course
      if (course && course.id) {
        wx.navigateTo({
          url: `/pages/course-detail/course-detail?id=${course.id}`
        })
      }
    },

    // 手动刷新
    onRefresh() {
      console.log('手动刷新课程数据')
      
      this.setData({
        page: 1,
        hasMore: true,
        courses: [], // 清空现有课程列表
        loading: true
      })
      
      // 根据当前分类刷新数据
      if (this.data.currentCategory === 0) {
        this.loadCourses()
      } else {
        this.filterCoursesByCategory(this.data.currentCategory)
      }
      
      wx.showToast({
        title: '刷新成功',
        icon: 'success',
        duration: 1500
      })
    },
  
    // 上拉加载更多
    onReachBottom() {
      if (this.data.hasMore) {
        this.setData({
          page: this.data.page + 1
        })
        
        // 根据当前分类加载更多数据
        if (this.data.currentCategory === 0) {
          this.loadCourses()
        } else {
          this.filterCoursesByCategory(this.data.currentCategory)
        }
      }
    },
  
    // 更新分类计数
    updateCategoryCounts() {
      const courses = this.data.courses
      const categories = this.data.categories.map(category => {
        if (category.id === 0) {
          // 全部分类显示所有课程数量
          return { ...category, count: courses.length }
        } else {
          // 其他分类显示对应分类的课程数量
          const count = courses.filter(course => course.categoryId == category.id).length
          return { ...category, count }
        }
      })
      
      this.setData({
        categories: categories
      })
    },

    // 重试按钮点击事件
    onRetry() {
      this.setData({ error: null })
      this.getFenLei()
      this.getContent()
    }
  })